﻿using Order.Domain.Entity;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Order.Domain.DomainService
{
    public class VerifySkuService : IDomainService
    {
        public VerifySkuService()
        {

        }

        public async Task<string> VerifySku(List<VerifySkuDto> verifySkuList, List<OrderItem> orderItemList)
        {
            var verifySkuResult = string.Empty;
            foreach (var orderItem in orderItemList)
            {
                var verifySku = verifySkuList.FirstOrDefault(e => e.Id == orderItem.SkuId);
                if (verifySku == null)
                {
                    verifySkuResult += $"sku:{orderItem.SkuId},不存在！";
                }
                else 
                {
                    if (verifySku.SalesStatus == SalesStatus.OffShelf)
                    {
                        verifySkuResult += $"sku:{verifySku.Id},已下架!";
                    }
                    if (orderItem.SkuQuantity > verifySku.Stock) 
                    {
                        verifySkuResult += $"sku:{verifySku.Id},库存不足!";
                    }
                }

            }
            await Task.CompletedTask;
            return verifySkuResult;
        }
    }

    public class VerifySkuDto
    {
        public string Id { get; set; }

        /// <summary>
        /// 销售状态
        /// </summary>
        public SalesStatus SalesStatus { get; set; }

        /// <summary>
        /// sku 库存
        /// </summary>
        public int Stock { get; set; }
    }

    public enum SalesStatus
    {
        [Description("上架")]
        OnShelf = 1,
        [Description("下架")]
        OffShelf = 2
    }
}
